package com.factory.factorymethod.section5;

import java.lang.reflect.Constructor;

/**
 * 使用工厂模式改写单例模式
 */
public class SingletonFactory {
	private static Singleton singleton;
	static{
		System.out.println("Class字节码加载进内存就生成Class对象,字节码只会加载一次,且多线程下jvm保证字节码只会被加载一次");
		try {
			Class cl= Class.forName(Singleton.class.getName());
			//获得无参构造
			Constructor constructor=cl.getDeclaredConstructor();
			//设置无参构造是可访问的
			constructor.setAccessible(true);
			//产生一个实例对象
			singleton = (Singleton)constructor.newInstance();
		} catch (Exception e) {
			//异常处理
		}
	}
	
	public static Singleton getSingleton(){
		return singleton;
	}



}
